package com.goldgov.information.service;

import java.io.IOException;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import us.codecraft.webmagic.selector.Html;

/**
 * 爬虫模板
 * */
public class CrawlerValueTemplets{

	protected final static Log logger = LogFactory.getLog(CrawlerValueTemplets.class);
	/**
	 * 根据类型运行相关的模板
	 * @return 
	 * @throws IOException 
	 * @throws XpathSyntaxErrorException 
	 * */
	public static String splicingHtml(CrawlerValueTempletEnum crawlerTempletEnum,Html html,String rules) throws IOException{
		String value="";
		List<String> linkList;
		Document doc = null;
		Element contextEle = null;
		switch(crawlerTempletEnum) {
			case URL1:
				linkList=html.xpath("/html/body/div[7]/div[1]/div/div[2]/div/a/@abs:href").all();
				if(linkList.isEmpty()) {
					value=html.xpath(rules).toString().trim();
					break;
				}
				logger.info("1===========>开始进行页面拼接,启动规则："+crawlerTempletEnum.name());
				for(int i=0;i<linkList.size();i++) {
					doc= Jsoup.connect(linkList.get(i)).get();
					if(i==0) {
						contextEle=doc.select("div[class=show_text]").first();
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.children().remove();
						contextEle.append(pEle.outerHtml());
					}else {
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.append(pEle.outerHtml());
					}
				}
				value=contextEle.outerHtml();
				break;
			case URL2:
				logger.info("2===========>开始进行页面拼接,启动规则："+crawlerTempletEnum.name());
				linkList=html.xpath("/html/body/div[7]/div[1]/div/div[2]/div/a/@abs:href").all();
				if(linkList.isEmpty()) {
					value=html.xpath(rules).toString().trim();
					break;
				}
				for(int i=0;i<linkList.size();i++) {
					doc= Jsoup.connect(linkList.get(i)).get();
					if(i==0) {
						contextEle=doc.select("div[class=show_text]").first();
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.children().remove();
						contextEle.append(pEle.outerHtml());
					}else {
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.append(pEle.outerHtml());
					}
//					logger.info(contextEle);
				}
				value=contextEle.outerHtml();
				break;
			case URL3:
				logger.info("3===========>开始进行页面拼接,启动规则："+crawlerTempletEnum.name());
				linkList=html.xpath("/html/body/div[7]/div[1]/div/div[2]/div/a/@abs:href").all();
				if(linkList.isEmpty()) {
					value=html.xpath(rules).toString().trim();
					break;
				}
				for(int i=0;i<linkList.size();i++) {
					doc= Jsoup.connect(linkList.get(i)).get();
					if(i==0) {
						contextEle=doc.select("div[class=show_text]").first();
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.children().remove();
						contextEle.append(pEle.outerHtml());
					}else {
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.append(pEle.outerHtml());
					}
//					logger.info(contextEle);
				}
				value=contextEle.outerHtml();
//				logger.info(value);
				break;
			case URL4:
				logger.info("4===========>开始进行页面拼接,启动规则："+crawlerTempletEnum.name());
				linkList=html.xpath("/html/body/div[7]/div[1]/div/div[2]/div/a/@abs:href").all();
				if(linkList.isEmpty()) {
					value=html.xpath(rules).toString().trim();
					break;
				}
				for(int i=0;i<linkList.size();i++) {
					doc= Jsoup.connect(linkList.get(i)).get();
					if(i==0) {
						contextEle=doc.select("div[class=show_text]").first();
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.children().remove();
						contextEle.append(pEle.outerHtml());
					}else {
						Elements pEle=doc.select("div[class=show_text] p");
						contextEle.append(pEle.outerHtml());
					}
//					logger.info(contextEle);
				}
				value=contextEle.outerHtml();
				break;
			default :
				break;
		}
		return value;
	}
	
//	public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
//		Document doc = null;
//		String url="http://theory.people.com.cn/n1/2017/0413/c40531-29208916-2.html";
//		doc= Jsoup.connect(url).get();
//		Elements divEle=doc.select("a href");
//		Elements pEle=doc.select("div[class=show_text] p");
//		logger.info(divEle);
//	}
}